/*
 * @lc app=leetcode id=477 lang=cpp
 *
 * [477] Total Hamming Distance
 */

// @lc code=start
class Solution {
public:
    int totalHammingDistance(vector<int>& nums) {
    //  int ans  = 0;
    //  for (int i = 0; i < nums.size(); ++i) {
    //      for (int j = i + 1; j < nums.size(); ++j) {
    //          int a = nums[i] ^ nums[j];
    //          int c = 0;
    //          while (a>0) {
    //              c += (a & 1);
    //              a>>= 1;
    //          }
    //          ans += c;
    //      }
    //  }   
    //  return ans;
        int ans = 0;
        for (int i= 0; i < 32; ++i) {
            int cnt = 0;
            for (auto n : nums) {
                cnt += (n >> i) & 1;
            }
            ans += cnt * (nums.size() - cnt);
        }
        return ans;
    }
};
// @lc code=end

